/**
 *  编写代码, 实现线程安全版本的单例模式
 */

class SingletonLazy {
    private static volatile SingletonLazy instance = null;

    // 将构造方法设置为私有
    private SingletonLazy() { }

    public SingletonLazy getInstance() {
        // 双重if检查,避免无脑加锁带来的开销
        if(instance == null) { // instance 不为空才进行加锁从而进行 实例化对象
            synchronized (SingletonLazy.class) {
                if(instance == null) { // 再次检查instance 不为空才进行加锁从而进行 实例化对象
                    instance = new SingletonLazy();
                }
            }
        }
        return instance;
    }
}

public class Test2 {
    public static void main(String[] args) {

    }
}
